package com.jc.service.common.api;

import com.jc.service.common.model.LoginUser;
import com.jc.service.common.model.UserContext;
import com.jc.service.common.util.ResponseResult;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RestController;

/**
 * 控制器公共方法类
 * 提供所有控制器可复用的通用方法
 */
public class CommonController {

    protected final Logger logger = LoggerFactory.getLogger(this.getClass());

    /**
     * 获取当前登录用户信息
     * 
     * @return 当前登录用户
     */
    protected LoginUser getLoginUser() {
        return UserContext.getUser();
    }

    /**
     * 获取当前登录用户名
     * 
     * @return 登录用户名
     */
    protected String getCurrentLoginName() {
        return UserContext.getLoginName();
    }

    /**
     * 获取当前登录用户全名
     * 
     * @return 用户全名
     */
    protected String getCurrentFullName() {
        return UserContext.getFullName();
    }

    /**
     * 获取当前租户ID
     * 
     * @return 租户ID
     */
    protected String getCurrentTenantId() {
        return UserContext.getTenantId();
    }

    /**
     * 创建成功响应
     * 
     * @param data 响应数据
     * @param <T>  数据类型
     * @return 成功响应
     */
    protected <T> ResponseResult<T> success(T data) {
        return ResponseResult.success(data);
    }

    /**
     * 创建带消息的成功响应
     * 
     * @param message 成功消息
     * @param data    响应数据
     * @param <T>     数据类型
     * @return 成功响应
     */
    protected <T> ResponseResult<T> success(String message, T data) {
        return ResponseResult.success(message, data);
    }

    /**
     * 创建失败响应
     * 
     * @param code    错误码
     * @param message 错误消息
     * @param <T>     数据类型
     * @return 失败响应
     */
    protected <T> ResponseResult<T> error(int code, String message) {
        return ResponseResult.error(code, message);
    }
}